package com.zeng.ssm.service.support.trans.base;

import com.zeng.ssm.service.support.trans.annotation.ClientHandler;
import com.zeng.ssm.service.support.trans.base.model.BaseMessage;
import lombok.Getter;
import lombok.Setter;

/**
 * 通信模块-共用交易组件
 *
 * @author zengwanlin
 * @date 2023-08-30T16:04
 */
@Getter
@Setter
public class BasicTransComponent {

    /**
     * 批次ID
     */
    private Integer contractId;

    /**
     * 明细ID
     */
    private Integer detailId;

    /**
     * 批次号
     */
    private String contractNo;

    /**
     * 产品号
     */
    private String productNo;

    /**
     * 当前交易是否为冲正交易
     * <p>
     * true-冲正交易，false-正常交易
     */
    private boolean reversal;

    /**
     * 系统编码
     */
    private String sysCode;

    /**
     * 消息编码
     */
    private String msgCode;

    /**
     * 消息名称
     */
    private String msgName;

    /**
     * 报文记录方式
     */
    private ClientHandler.LoggingType loggingType;

    /**
     * 是否不可重复
     * <p>
     * 查询类接口为false
     */
    private boolean unRepeatable;

    /**
     * 如果已成功，是否需要再次解析响应报文
     */
    private boolean reParse;

    /**
     * 交易结果
     */
    private boolean success = false;

    /**
     * 响应码
     */
    private String retCode;

    /**
     * 响应信息
     */
    private String retMsg;

    /**
     * 请求流水号
     */
    private String reqSeqNo;

    /**
     * 请求报文
     */
    private String reqMsg;

    /**
     * 请求报文实体类
     */
    private BaseMessage reqMessage;

    /**
     * 响应流水号
     */
    private String respSeqNo;

    /**
     * 响应报文
     */
    private String respMsg;

    /**
     * 响应报文实体类
     */
    private BaseMessage respMessage;

    /**
     * 原请求流水号（冲正时使用）
     */
    private String orgReqSeqNo;

}
